Skip to main content

config-apache-ssl

Pour activer le SSL sur Apache via le port 443, voici les étapes principales :


🔧 1. Pré-requis

  • Apache installé
  • Un certificat SSL (auto-signé ou émis par une autorité de certification)
  • Le module ssl activé (mod_ssl)

📁 2. Activer le module SSL (si ce n’est pas déjà fait)

sudo a2enmod ssl
sudo systemctl restart apache2

🔐 3. Placer les certificats

Placez vos fichiers dans un répertoire (souvent /etc/ssl/certs et /etc/ssl/private), par exemple :

  • /etc/ssl/certs/mon_site.crt
  • /etc/ssl/private/mon_site.key

📝 4. Configurer un hôte virtuel pour le port 443

Créez ou modifiez un fichier comme /etc/apache2/sites-available/mon_site-ssl.conf :

<VirtualHost *:443>
ServerName monsite.exemple.com

DocumentRoot /var/www/mon_site

SSLEngine on
SSLCertificateFile /etc/ssl/certs/mon_site.crt
SSLCertificateKeyFile /etc/ssl/private/mon_site.key
# Facultatif : chaîne d’autorité
SSLCertificateChainFile /etc/ssl/certs/chain.pem

<Directory /var/www/mon_site>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/mon_site_error.log
CustomLog ${APACHE_LOG_DIR}/mon_site_access.log combined
</VirtualHost>

🚀 5. Activer le site SSL et redémarrer Apache

sudo a2ensite mon_site-ssl
sudo systemctl reload apache2

✅ 6. (Optionnel) Rediriger HTTP vers HTTPS

Ajoutez dans le fichier du port 80 :

<VirtualHost *:80>
ServerName monsite.exemple.com
Redirect permanent / https://monsite.exemple.com/
</VirtualHost>

📌 Vérification

  • Vérifiez qu’Apache écoute bien sur le port 443 : sudo ss -tlnp | grep :443
  • Ouvrez dans un navigateur : https://monsite.exemple.com

Voici une version complète de ton script Bash pour installer Zabbix avec PostgreSQL et activer le SSL sur Apache2 (port 443), même si Apache est déjà installé (il sera purgé et réinstallé proprement). Un certificat auto-signé est généré pour HTTPS.


Script amélioré install_zabbix_ssl.sh

#!/bin/bash

# Variables
DB_NAME="zabbix"
DB_USER="zabbix"
DB_PASSWORD="zabbix" # Change ce mot de passe pour la production
SSL_DIR="/etc/ssl/zabbix"
DOMAIN=$(hostname -f)

echo "=== Mise à jour du système ==="
sudo apt update && sudo apt upgrade -y

echo "=== Suppression d'Apache si déjà installé ==="
sudo systemctl stop apache2
sudo apt purge -y apache2 apache2-utils apache2-bin apache2.2-common
sudo apt autoremove -y
sudo rm -rf /etc/apache2

echo "=== Réinstallation d'Apache ==="
sudo apt install -y apache2

echo "=== Installation des dépendances ==="
sudo apt install -y curl wget gnupg2 ufw openssl

echo "=== Ajout du dépôt Zabbix ==="
wget https://repo.zabbix.com/zabbix/7.2/release/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.2+debian12_all.deb
sudo dpkg -i zabbix-release_latest_7.2+debian12_all.deb
sudo apt update

echo "=== Installation de Zabbix et PostgreSQL ==="
sudo apt install -y zabbix-server-pgsql zabbix-frontend-php php8.2-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-agent postgresql postgresql-contrib

echo "=== Configuration de PostgreSQL ==="
sudo systemctl start postgresql
sudo systemctl enable postgresql

sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASSWORD';"
sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"

echo "=== Importation du schéma Zabbix ==="
zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql $DB_NAME

echo "=== Configuration de Zabbix Server ==="
sudo sed -i "s/# DBPassword=/DBPassword=$DB_PASSWORD/" /etc/zabbix/zabbix_server.conf
sudo sed -i "s/DBName=zabbix/DBName=$DB_NAME/" /etc/zabbix/zabbix_server.conf
sudo sed -i "s/DBUser=zabbix/DBUser=$DB_USER/" /etc/zabbix/zabbix_server.conf

echo "=== Génération d'un certificat SSL auto-signé ==="
sudo mkdir -p "$SSL_DIR"
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout "$SSL_DIR/zabbix.key" \
-out "$SSL_DIR/zabbix.crt" \
-subj "/C=FR/ST=France/L=Paris/O=Zabbix/OU=IT/CN=$DOMAIN"

echo "=== Configuration d'Apache pour SSL ==="
sudo a2enmod ssl
cat <<EOF | sudo tee /etc/apache2/sites-available/zabbix-ssl.conf
<VirtualHost *:443>
ServerName $DOMAIN

DocumentRoot /usr/share/zabbix

SSLEngine on
SSLCertificateFile $SSL_DIR/zabbix.crt
SSLCertificateKeyFile $SSL_DIR/zabbix.key

<Directory "/usr/share/zabbix">
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>

ErrorLog \${APACHE_LOG_DIR}/zabbix-ssl-error.log
CustomLog \${APACHE_LOG_DIR}/zabbix-ssl-access.log combined
</VirtualHost>
EOF

sudo a2ensite zabbix-ssl
sudo systemctl reload apache2

echo "=== Redémarrage et activation des services ==="
sudo systemctl restart zabbix-server zabbix-agent apache2
sudo systemctl enable zabbix-server zabbix-agent apache2

echo "=== Configuration du pare-feu UFW ==="
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10050/tcp
sudo ufw allow 10051/tcp
sudo ufw reload

echo "=== Installation terminée ==="
echo "Interface Web disponible à :"
echo " - HTTP : http://$(hostname -I | awk '{print $1}')/zabbix/"
echo " - HTTPS : https://$(hostname -I | awk '{print $1}')/zabbix/"

📌 Notes

  • Le certificat SSL est auto-signé : vous aurez une alerte de sécurité dans le navigateur.
  • Pour un vrai domaine avec HTTPS valide, utilisez Let's Encrypt avec certbot.
  • Apache est entièrement purgé puis réinstallé.
  • Zabbix est accessible via HTTP et HTTPS.

Le message "Active checks: [Zabbix agent] [unknown]" signifie que l’agent Zabbix ne parvient pas à contacter le serveur Zabbix pour les active checks.


🔍 Contexte

Zabbix distingue deux types de checks :

  • Passive checks : le serveur interroge l’agent.
  • 🔁 Active checks : l’agent envoie périodiquement des données au serveur.

Le message "unknown" indique que l’agent ne parvient pas à résoudre ou joindre le serveur Zabbix défini dans la directive ServerActive= de zabbix_agentd.conf.


✅ Étapes de résolution

1. Vérifie la config de l'agent

sudo grep -E '^Server|^ServerActive|^Hostname' /etc/zabbix/zabbix_agentd.conf

Tu devrais voir quelque chose comme :

Server=192.168.1.100
ServerActive=192.168.1.100
Hostname=ubuntu

Assure-toi que :

  • ServerActive= contient bien l'IP (ou nom DNS) du serveur Zabbix
  • Hostname= correspond exactement au nom d’hôte défini dans l’interface Zabbix (onglet Configuration > Hosts)

2. Tester la résolution DNS si tu utilises un nom

Si ServerActive=zabbix.domain.local, teste :

ping zabbix.domain.local

Si ça ne répond pas, utilise une IP dans ServerActive.


3. Redémarre l’agent après les modifications

sudo systemctl restart zabbix-agent

Puis vérifie les logs :

sudo journalctl -u zabbix-agent | tail -30

4. Vérifie que le serveur écoute sur le bon port (10051)

Sur le serveur Zabbix, exécute :

sudo ss -tlnp | grep 10051

Tu dois voir une ligne avec LISTEN sur le port 10051.

Et vérifie que le pare-feu l'autorise :

sudo ufw allow 10051/tcp

5. Vérifie dans l’interface Zabbix

Dans Configuration → Hosts → [Ton hôte] :

  • Le champ Agent interfaces est bien renseigné avec l’IP de l’agent ?
  • Le champ "Host name" est exactement identique à la ligne Hostname= dans la config de l'agent ?

✅ Exemple de configuration correcte

Server=192.168.56.100
ServerActive=192.168.56.100
Hostname=ubuntu-agent

Et dans l’interface Zabbix, l’hôte s’appelle aussi ubuntu-agent.


Souhaite-tu que je t’écrive une config corrigée basée sur ton cas ? Envoie :

  • IP du serveur Zabbix
  • hostname du client (hostname ou hostnamectl)
  • Et la sortie de /etc/zabbix/zabbix_agentd.conf (sans commentaires)

Merci, l’erreur suivante est très claire :

Get value from agent failed: cannot read response: cannot read from socket: [104] Connection reset by peer

Cela signifie que :

Le serveur Zabbix essaie d’interroger l’agent (passive check sur port 10050), mais l’agent ferme la connexion immédiatement.


✅ Résumé du problème

Ton serveur Zabbix (192.168.50.100) contacte l’agent Zabbix, mais :

  • Le port est ouvert,
  • La connexion est acceptée,
  • Mais ensuite, l’agent refuse ou coupe la connexion → souvent à cause d'une mauvaise configuration dans zabbix_agentd.conf (en particulier Server=).

🔧 Solution

1. 🔍 Vérifie la config de l’agent sur la machine cliente

sudo grep -E '^Server|^Hostname' /etc/zabbix/zabbix_agentd.conf

Tu dois avoir exactement ceci (adapté à ton cas) :

Server=192.168.50.100
Hostname=ubuntu-client # <- Ce nom doit aussi exister dans l'interface Zabbix

Erreurs fréquentes :

  • Server=127.0.0.1 au lieu de l'IP du serveur Zabbix
  • Server= vide ou mal formaté

2. 🔁 Redémarre l’agent

Après avoir corrigé le fichier :

sudo systemctl restart zabbix-agent

Et vérifie s’il écoute :

sudo ss -tlnp | grep 10050

3. 🔥 Vérifie le pare-feu

Sur la machine cliente (où tourne l’agent) :

sudo ufw allow 10050/tcp

4. ✅ Vérifie dans l’interface Zabbix

Dans Configuration → Hosts → [Ton hôte] :

  • Dans "Agent interfaces", l'IP est celle de l’agent, par exemple 192.168.50.101
  • Le champ "Host name" = correspond exactement à Hostname= dans le fichier zabbix_agentd.conf

5. 🧪 Tester localement si l’agent répond

Depuis le serveur Zabbix :

zabbix_get -s 192.168.50.101 -k agent.ping

Remplace 192.168.50.101 par l’IP réelle de l’agent.

Tu dois recevoir :

1

🔁 Résumé des actions à faire

Sur l'agent (machine cliente) :

sudo sed -i 's/^Server=.*/Server=192.168.50.100/' /etc/zabbix/zabbix_agentd.conf
sudo systemctl restart zabbix-agent
sudo ufw allow 10050/tcp

Puis, depuis le serveur Zabbix :

zabbix_get -s <IP_de_l_agent> -k agent.ping

Tu peux m’envoyer :

  • La sortie de grep -E '^Server|^Hostname' /etc/zabbix/zabbix_agentd.conf
  • L’IP réelle de la machine agent

Et je te corrige ça ligne par ligne.

Le port par défaut de PostgreSQL (abrégé PSQL) est :

🔢 5432


📌 Détails techniques

  • Ce port est utilisé pour toutes les connexions entrantes (locales ou distantes) au serveur PostgreSQL.

  • Il est défini dans le fichier de configuration :

    /etc/postgresql/15/main/postgresql.conf

    (ou une autre version selon ton OS)

    Ligne à vérifier :

    port = 5432

🔐 Autoriser le port dans le pare-feu (UFW)

sudo ufw allow 5432/tcp

🌐 Accès distant (si nécessaire)

Si tu veux autoriser des connexions depuis une autre machine :

  1. Dans /etc/postgresql/15/main/postgresql.conf, active :

    listen_addresses = '*'
  2. Dans /etc/postgresql/15/main/pg_hba.conf, ajoute une ligne :

    host    all             all             192.168.0.0/24         md5

    (remplace 192.168.0.0/24 par le réseau ou l’IP autorisé(e))

  3. Redémarre PostgreSQL :

    sudo systemctl restart postgresql

Si tu veux que je te prépare une config pour que Zabbix se connecte à PostgreSQL sur un hôte distant, donne-moi :

  • L’IP du serveur PostgreSQL
  • L’utilisateur utilisé
  • Et si c’est local ou distant

Pour accéder à l'interface web de Zabbix (http://IP/zabbix), voici les informations par défaut et ce que tu dois faire pour te connecter :


🔐 Identifiants par défaut de l’interface Zabbix

  • Nom d’utilisateur : Admin (avec un A majuscule)
  • Mot de passe : zabbix

⚠️ Tu devras changer ce mot de passe dès la première connexion pour des raisons de sécurité.


🌐 Accès à l’interface

Si ton serveur a l’IP 192.168.50.100, ouvre dans ton navigateur :

http://192.168.50.100/zabbix

Tu peux aussi y accéder en HTTPS si tu as configuré un certificat SSL :

https://192.168.50.100/zabbix

🛠 Tu peux aussi réinitialiser le mot de passe Admin si nécessaire

Si tu as perdu l'accès à l'interface Zabbix, tu peux réinitialiser le mot de passe Admin en ligne de commande :

sudo -u postgres psql zabbix

Puis dans la console PostgreSQL :

UPDATE users SET passwd=md5('nouveaumotdepasse') WHERE alias='Admin';
\q

Remplace nouveaumotdepasse par le mot de passe que tu veux.


Pas de souci ! L’erreur :

zabbix_get: command not found

signifie simplement que l’outil zabbix-get n’est pas encore installé sur le serveur Zabbix. Cet outil permet de tester les connexions vers les agents Zabbix.


✅ Pour installer zabbix-get

Sur le serveur Zabbix :

sudo apt update
sudo apt install zabbix-get -y

🧪 Ensuite, teste la connexion à l’agent

Exemple, si l'agent est sur 192.168.50.101 :

zabbix_get -s 192.168.50.101 -k agent.ping

Si ça fonctionne, tu verras :

1

Sinon, ça confirmera le type d’erreur (connection refused, connection reset, etc.)


Tu peux maintenant :

  • Installer zabbix-get
  • M’envoyer le résultat de la commande zabbix_get après test

Merci pour le retour clair 👍 Le message :

Get value error: cannot read from socket: [104] Connection reset by peer

signifie que :

✅ Le port 10050 est bien accessible, ❌ Mais l’agent Zabbix ferme la connexion, généralement parce que la config ne permet pas à ce serveur Zabbix d’y accéder.


🧠 Explication technique

L'agent lit la variable Server= dans le fichier /etc/zabbix/zabbix_agentd.conf.

Si l'IP de ton serveur Zabbix n’est pas listée, l’agent accepte la connexion TCP mais la ferme aussitôt.


✅ Étapes pour corriger

1. 📄 Vérifie (et corrige) la config de l’agent

Sur la VM où l'agent tourne (la cible) :

sudo nano /etc/zabbix/zabbix_agentd.conf

Assure-toi que tu as :

Server=192.168.50.100
Hostname=ubuntu-ovh

Remplace 192.168.50.100 par l’IP réelle de ton serveur Zabbix Remplace ubuntu-ovh par le nom d’hôte défini dans l’interface Zabbix (Configuration > Hosts)

Si ton serveur Zabbix a plusieurs IP ou que tu veux tout autoriser temporairement :

Server=0.0.0.0/0

⚠️ Pas recommandé en production, uniquement pour test.


2. 🔁 Redémarre l’agent

sudo systemctl restart zabbix-agent

Et vérifie s’il tourne bien :

sudo systemctl status zabbix-agent

3. 🔥 Autorise le port 10050 dans UFW (sur l'agent)

sudo ufw allow 10050/tcp
sudo ufw reload

4. 🧪 Re-teste avec zabbix_get

Depuis ton serveur Zabbix :

zabbix_get -s IP_DE_L_AGENT -k agent.ping

Tu dois recevoir :

1

🛠️ Bonus : Affiche ce que tu as

Tu peux me copier-colle ceci :

grep -E '^Server|^Hostname' /etc/zabbix/zabbix_agentd.conf
hostname -I

Et depuis ton serveur Zabbix :

zabbix_get -s IP_DE_L_AGENT -k agent.ping